Data storage systems can contain a directory that points to the location of information contained within the data storage system. The directory may be searched to find the location of a particular file, and then the address contained in the directory may be used to retrieve the requested file. As items are stored in the data storage system, entries are created in the directory for those items.
The storage device referenced by the directory may be a single disk drive or may be an organized conglomerate of several disk drives. Various methods exist to organize several disk drives, such as the various permutations of RAID technology. In some cases, the physical storage space may be smaller than the addressable memory of the directory. Such a case may be a sparsely filled database or virtual storage.
The directory information may be stored in random access memory so that the directory may be immediately searched in order to locate a particular file. As such, the size of the directory is preferred to be as small as reasonably possible. Further, the structure of the information should be amenable to quick searching.
The design of an optimum directory structure for sparsely filled and non-sparsely filled data containers may be different. In a fully populated directory, the directory may contain an entry for every block of data. Such a directory may consist of a large look-up table or other structure. In a sparsely filled directory, a look-up table may be very inefficient and consume a large amount of space in proportion to the actual amount of data stored in the container.
It would therefore be advantageous to provide a directory structure that is compact and easily searchable for sparsely filled directories yet may also be adapted to efficient searching as the directory becomes filled.